/**
 * 1、若函数需要返回数据则可以通过 return 语句实现
 * 2、若函数执行时抛出了异常且未捕获异常，则函数会立即结束
 * 3、函数执行时，遇到 return 语句执行，该函数会立即结束
 * 4、在 return 关键字之后可以跟需要返回的数据
 * 5、所谓 返回 ，就是 返回到 函数的 调用者(caller)
 */

/*
function add( a , b ) {
    // 如果 a 和 b 都是 数字 时，才执行加法运算
    if( typeof(a) === 'number' && typeof(b) === 'number' ) {
        let c = a + b ;
        return c ; // 使用 return 语句可以返回数据
    }
}
*/

function add( a , b ) {
    // 若a不是数字 或 b不是数字
    if( typeof(a) !== 'number' || typeof(b) !== 'number' ) {
        let ex = new Error( '参数不是数字类型，无法完成加法运算' );
        // 此时可以 抛出异常(Error) 而不作其它操作
        throw ex ; // 如果抛出异常则函数会立即结束
    } 

    let c = a + b ;  
    return c ; // 使用 return 语句可以返回数据
}

let x = 1 ;
let y = 2 ;
let result = add( x , y );
console.log( x , '+' , y , '=' , result );

console.log( '- - - - - - - - - - - - - - -' );

let p = true ; // typeof(p) : boolean
let q = 'abc' ; // typeof(p) : string

let r = add( p , q );
console.log( p , '+' , q , '=' , r );
